#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
#include "termino.h"
#include "lista.h"

/*
 * Función auxiliar para imprimir si estuvo OK o no.
 */
void print_test(char* name, bool result){
    printf("%s: %s\n", name, result? "OK" : "ERROR");
}


void prueba_crear_termino_con_1_palabra(){

	char* palabra = malloc(sizeof(char)*5);
	char* test="hola";
	strcpy(palabra,test);
	
	lista_t* lista = lista_crear();
	
	lista_insertar_primero(lista,palabra);
	
	termino_t* termino = termino_crear(lista);
	
	print_test("Prueba crear termino con 1 palabra",strcmp(termino->valor,"hola")==0);
	
	termino_destruir(termino);



}

void prueba_crear_termino_con_2_palabras(){

	char* palabra1 = malloc(sizeof(char)*5);
	char* test="hola";
	strcpy(palabra1,test);
	
	char* palabra2 = malloc(sizeof(char)*5);
	char* test2="chau";
	strcpy(palabra2,test2);
	
	lista_t* lista = lista_crear();
	
	lista_insertar_primero(lista,palabra2);
	lista_insertar_primero(lista,palabra1);
	
	termino_t* termino = termino_crear(lista);
	
	print_test("Prueba crear termino con 2 palabras",strcmp(termino->valor,"hola chau")==0);
	
	termino_destruir(termino);



}


void prueba_crear_termino_con_varias_palabras(){

	char* palabra1 = malloc(sizeof(char)*5);
	char* test="hola";
	strcpy(palabra1,test);
	
	char* palabra2 = malloc(sizeof(char)*5);
	char* test2="como";
	strcpy(palabra2,test2);
	
	char* palabra3 = malloc(sizeof(char)*5);
	char* test3="te";
	strcpy(palabra3,test3);
	
	char* palabra4 = malloc(sizeof(char)*5);
	char* test4="va?";
	strcpy(palabra4,test4);
	
	char* palabra5 = malloc(sizeof(char)*5);
	char* test5="Todo";
	strcpy(palabra5,test5);
	
	char* palabra6 = malloc(sizeof(char)*6);
	char* test6="bien?";
	strcpy(palabra6,test6);
	lista_t* lista = lista_crear();
	
	lista_insertar_primero(lista,palabra6);
	lista_insertar_primero(lista,palabra5);
	
	lista_insertar_primero(lista,palabra4);
	lista_insertar_primero(lista,palabra3);
	
	lista_insertar_primero(lista,palabra2);
	lista_insertar_primero(lista,palabra1);
	
	termino_t* termino = termino_crear(lista);
	
	print_test("Prueba crear termino con varias palabras",strcmp(termino->valor,"hola como te va? Todo bien?")==0);
	
	termino_destruir(termino);

}

void prueba_termino(){
    prueba_crear_termino_con_1_palabra();
	prueba_crear_termino_con_2_palabras();
	prueba_crear_termino_con_varias_palabras();
}


int main (){
    prueba_termino();
    return 0;
}
